Pagini recente » Cod sursa (job #686906) | Cod sursa (job #2597068) | Cod sursa (job #50668) | Cod sursa (job #2149469) | Cod sursa (job #155170)
Cod sursa(job #155170)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <string>
#define maxn 30001
struct nod { int a, b, p;nod(){}; nod(int A, int B, int C){a=A; b=B; p=C;};};
nod x[maxn];
int N;
int n;
int nr[maxn];
inline int max(int a, int b)
{
if(a>b) return a;
return b;
}
inline int min(int a, int b)
{
if(a<b) return a;
return b;
}
int main()
{
int m, type,a,i, b, p, A, B,K,mx,mn, v;
//freopen("bile.in","r",stdin);
//freopen("bile.out","w",stdout);
//scanf("%d\n", &n);
// scanf("%d\n", &m);
n=30000;
m=30000;
srand(time(0));
char ax[256], *t;
while(m--)
{
/*
gets(ax);
t=strtok(ax, " ");
type=atoi(t);
t=strtok(0, " ");
a=atoi(t);
t=strtok(0, " ");
b=atoi(t);
t=strtok(0, "\n");
p=atoi(t);
*/
type=rand()&1;
a=rand()%n;
b=rand()%n;
p=rand()%30000;
if(a>b) a^=b^=a^=b;
// scanf("%d %d %d %d\n", &type,&a, &b, &p);
if(type==1) x[++N]=nod(a, b, p);
if(type==0)
{
for(i=1;i<=N;++i) nr[x[i].p]=0;
for(i=1;i<=N;++i)
{
A=x[i].a;
B=x[i].b;
K=x[i].p;
// mx=A>?a;
//mn=b<?B;
mx=max(A, a);
mn=min(b, B);
if(mn>=mx) nr[K]+=mn-mx+1;
}
v=0;
for(i=1;i<maxn;++i)
if(v+nr[i]>=p)break;
else v+=nr[i];
//memset(nr, 0, sizeof(nr));
if(i>=maxn)i=-1;
//printf("%d\n", i);
}
}
return 0;
}