69,373
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
typedef struct node
{
int r,l,v;
} edge;
int cmp(edge a,edge b)
{
return (a.r == b.r) ? (a.l < b.l) : (a.r < b.r);
}
int m,n,num[1000],maxa,maxb,ma;
void init(edge a[],int k)
{
scanf("%d%d",&m,&n);
//cout << " sad "<<endl;
for (int i = 0 ;; i++)
{
//scanf("%d%d%d",&a[i].r,&a[i].l,&a[i].v);
cin >> a[i].r >> a[i].l >> a[i].v;
if(a[i].l == 0 && a[i].r == 0 && a[i].v == 0)
break;
if(k)
{
num[a[i].r]++;
if(a[i].l > maxb)
maxb = a[i].l;
ma++;
}
else
maxa++;
}
}
int main()
{
edge a[1000],b[1000],c[1000];
//memset(a, 0, sizeof(a));
init(a,0);
init(b,1);
int cput[1000],k = 0;
cput[1] = 0;
for (int i = 2; i <= maxb; i++)
cput[i] = cput[i-1]+num[i-1];
for (int i = 0 ; i < maxa; i++)
{
for (int j = cput[a[i].l]; ; j++)
{
if(j < ma && a[i].l == b[j].r)
{
c[k].r = a[i].r;
c[k].l = b[j].l;
c[k++].v = a[i].v * b[j].v;
}
else
break;
}
}
sort(c,c+k,cmp);
int i = 0;
for (i = 0 ; i < k-1 ; i++)
{
if(c[i].r == c[i+1].r && c[i].l == c[i+1].l)
c[i+1].v += c[i].v;
else
printf("%d %d %d\n",c[i].r,c[i].l,c[i].v);
}
printf("%d %d %d\n",c[i].r,c[i].l,c[i].v);
//system("pause");
return 0;
}
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int main()
{
int m, n, t;
printf("%d\n",scanf("%d%d",&m,&n));
printf(" %d\n", scanf("%d", &t));
printf("%d", t);
system("pause");
return 0;
}
#include <cstdio>
#include <cstring>
int main()
{
char str[1000];
gets(str);
for(int i = 0; i < strlen(str); i++)
printf("%d", str[i]);
printf("\n");
}
printf("%d\n",scanf("%d%d",&m,&n));
我把输入改成这样,输出scanf的返回值,一次性输出两个2, 0,然后奔溃