Submission #1041693

# Submission time Handle Problem Language Result Execution time Memory
1041693 2024-08-02T07:09:38 Z vjudge1 Tenis (COI19_tenis) C++17
18 / 100
256 ms 524288 KB
#warning Check FastIO
#ifdef ONLINE_JUDGE
    #pragma GCC optimize("Ofast")
    #pragma GCC target("avx,avx2,fma")
#endif
#include <iostream>
#include <algorithm>
#include <climits>
#include <queue>
#include <cmath>
#include <map>
#include <set>
#include <random>
#include <chrono>
#include <iomanip>
#include <vector>
#include <fstream>
using namespace std;
#define vll vector<ll>
#define sll set<ll>
#define vstr vector<string>
#define ll long long
#define ld long double
#define supra main
#define pb push_back
#define add insert
#define rall(x) rbegin(x),rend(x)
#define I ios_base::sync_with_stdio(false);
#define Hear cin.tie(NULL);
#define Shots cout.tie(NULL);
#define Ratatatata
#define bits_on(a) (__builtin_popcountll(a))
#define mx_pw2(a) (__builtin_ctzll(a))
mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count());  
#define SHUFFLE(v) shuffle(all(v), RNG); 
const ll inf=LLONG_MAX;
void input(vll& a)
{
    for(auto& i:a)
        cin>>i;
}
void pyn(bool a)
{
    cout<<(a?"YES":"NO")<<endl;
}
ll powmod(ll a,ll b,ll modulo)
{
  if(b==0){
    return 1;
  }
  ll temp=powmod(a,b/2,modulo);
  if(b%2==0){
    return (temp*temp)%modulo;
  }
  else{
    return (a*((temp*temp)%modulo))%modulo;
  }
}

bool Prime(ll n){
    for (ll i = 2; i*i <= n; i++)
        if (n % i == 0)
            return false;
    return (n>1);
}
#include <bitset>
const int N=1e5+1;
ll rank_of[N][3];
bitset<N> win[N];
bool won[N];
void solve()
{
	ll n,q;
	cin>>n>>q;	
	vector<ll> p[3];
	for(int j=0;j<3;j++)
	{
		for(int i=0;i<n;i++)
		{
			ll x;
			cin>>x;
			win[x][x]=1;
			p[j].push_back(x);
			rank_of[x][j]=n-i;
		}
	}
	for(int pl=0;pl<10;pl++)
	{
		for(int j=0;j<3;j++)
		{
			for(int k=n-2;k>=0;k--)
			{
				win[p[j][k]]|=win[p[j][k+1]];
			}
		}
	}
	for(ll x=1;x<=n;x++)
		won[x]=(win[x].count()==n);
	bool change=0;
	while(q--)
	{
		ll type;
		cin>>type;
		if(type==1)
		{
			ll x;
			cin>>x;
			if(!change)
			{
				if(won[x])
				{
					cout<<"DA"<<endl;
				}
				else
				{
					cout<<"NE"<<endl;
				}
				continue;
			}
			ll skill[3];
			skill[0]=rank_of[x][0];
			skill[1]=rank_of[x][1];
			skill[2]=rank_of[x][2];
			bool change=1;
			vector<pair<ll,ll>> oth[3];
			int ind[3];
			for(int j=0;j<3;j++)
			{
				ind[j]=0;
				for(int i=1;i<=n;i++)
				{
					oth[j].push_back({rank_of[i][j],i});
				}
				sort(begin(oth[j]),end(oth[j]));
			}
			ll kills=0;
			while(change)
			{
				change=0;
				for(int i=0;i<3;i++)
				{
					if(ind[i]<oth[i].size())
					{
						auto it=oth[i][ind[i]];
						if(it.first<skill[i])
						{
							// We nailed it
							change=1;
							ll mp=it.second;
							kills++;
							skill[0]=max(skill[0],rank_of[mp][0]);
							skill[1]=max(skill[1],rank_of[mp][1]);
							skill[2]=max(skill[2],rank_of[mp][2]);
							ind[i]++;
						}
					}
				}
			}
			// cout<<"Query for "<<kills<<' '<<skill[0]<<' '<<skill[1]<<' '<<skill[2]<<endl;
			if(max({skill[0],skill[1],skill[2]})==n)
			{
				cout<<"DA"<<endl;
			}
			else
			{
				cout<<"NE"<<endl;
			}
		}
		else
		{
			change=1;
			ll tp,x,y;
			cin>>tp>>x>>y;
			tp--;
			swap(rank_of[x][tp],rank_of[y][tp]);
		}
	}
}
int supra(){
    I Hear Shots Ratatatata
    ll tqwertyuiop=1;
    for(int tp=1;tp<=tqwertyuiop;tp++)
    {
        // cout<<"Case #"<<tp<<": ";
        solve();
    }
    return 0;
}
/*
Bro use only in a emergency 
this is kind of hacking
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
*/

Compilation message

tenis.cpp:1:2: warning: #warning Check FastIO [-Wcpp]
    1 | #warning Check FastIO
      |  ^~~~~~~
tenis.cpp: In function 'void solve()':
tenis.cpp:98:25: warning: comparison of integer expressions of different signedness: 'std::size_t' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   98 |   won[x]=(win[x].count()==n);
      |           ~~~~~~~~~~~~~~^~~
tenis.cpp:142:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  142 |      if(ind[i]<oth[i].size())
      |         ~~~~~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 2 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 2 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 2 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 2 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
7 Correct 35 ms 14932 KB Output is correct
8 Correct 31 ms 14940 KB Output is correct
9 Correct 33 ms 14908 KB Output is correct
10 Correct 54 ms 14932 KB Output is correct
11 Correct 37 ms 14928 KB Output is correct
12 Correct 35 ms 14936 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 2 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 2 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
7 Correct 35 ms 14932 KB Output is correct
8 Correct 31 ms 14940 KB Output is correct
9 Correct 33 ms 14908 KB Output is correct
10 Correct 54 ms 14932 KB Output is correct
11 Correct 37 ms 14928 KB Output is correct
12 Correct 35 ms 14936 KB Output is correct
13 Runtime error 256 ms 524288 KB Execution killed with signal 9
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 209 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 2 ms 4444 KB Output is correct
3 Correct 2 ms 4444 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 2 ms 4444 KB Output is correct
6 Correct 1 ms 4444 KB Output is correct
7 Correct 35 ms 14932 KB Output is correct
8 Correct 31 ms 14940 KB Output is correct
9 Correct 33 ms 14908 KB Output is correct
10 Correct 54 ms 14932 KB Output is correct
11 Correct 37 ms 14928 KB Output is correct
12 Correct 35 ms 14936 KB Output is correct
13 Runtime error 256 ms 524288 KB Execution killed with signal 9
14 Halted 0 ms 0 KB -