Pagini recente » Cod sursa (job #2022850) | Cod sursa (job #2091680) | Cod sursa (job #1585684) | Cod sursa (job #2939634) | Cod sursa (job #317366)
Cod sursa(job #317366)
#include<cstdio>
#include<vector>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define IN "marbles.in","r",stdin
#define OUT "marbles.out","w",stdout
#define PII pair<int,int>
#define x first
#define y second
#define Nmax 100020
int N , M;
PII V[Nmax];
int F[100];
/*
int cmp(const void *p, const void *q)
{
PII x = *(PII*)p, y = *(PII*)q;
if(x.x > y.x) return 1;
if(x.x < y.x) return -1;
return 0;
}*/
int main()
{
freopen(IN);
freopen(OUT);
scanf("%d%d",&N,&M);
for(int i = 1 ; i <= N ; ++i) scanf("%d%d",&V[i].x,&V[i].y);
//sort(V + 1 , V + 1 + N , cmp);
//qsort(V + 1 , N , sizeof(V[0]) , cmp);
//for(int i = 1 ; i <= N ; ++i) printf("%d %d\n",V[i].x,V[i].y);
int intr , X , Y ;
for(int i = 1 ; i <= M ; ++i)
{
scanf("%d%d%d",&intr,&X,&Y);
if(intr == 1){
int max = -20000000;
for(int j = 1 ; j <= N ; ++j)
if(V[j].x >= X && V[j].x <= Y) {
if(V[j].y > max) max = V[j].y;
++F[V[j].y];
}
int maxi = max;
max = -200000000;
for(int p = 1 ; p <= maxi ; ++p)
if(max < F[p]) max = F[p];
printf("%d\n",max);
for(int t = 1 ; t <= maxi ; ++t) F[t] = 0;
}
else {
int poz = -2000;
int aux;
int pozi;
for(int j = 1 ; j <= N ; ++j){
if(V[j].x == X + Y) poz = j;
if(V[j].x == X) pozi = j;
}
if(poz == - 2000){
V[pozi].x = X + Y;
continue;
}
aux = V[X].x;
V[X].x = V[X + Y].x;
V[X + Y].x = aux;
aux = V[X].y;
V[X].y = V[X + Y].y;
V[X + Y].y = aux;
}
}
return 0;
}