# 6/9
## A1)
``` cpp
#include <iostream>
using namespace std;
void fast() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(0);
}
void onePunchAC() {
int n; cin >> n;
for(int i = 1; i <= n; i++) {
cout << i << ' ';
}
}
int main() {
fast();
onePunchAC();
return 0;
}
```
## A2)
``` cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void fast() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(0);
}
void onePunchAC() {
int n; cin >> n;
vector<int> a(n+1);
for(int i = 1; i <= n; i++) a[i] = i;
if(n == 1) {
cout << a[0];
}
else {
swap(a[a.size() - 1], a[a.size()-2]);
for(int i = 1; i <= n; i++) {
cout << a[i] << ' ';
}
}
}
int main() {
fast();
onePunchAC();
return 0;
}
```
## A3)
``` cpp
#include <iostream>
using namespace std;
void fast() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(0);
}
void onePunchAC() {
int n; cin >> n;
for(int i = 1; i <= n; i++) {
cout << i << ' ';
}
}
int main() {
fast();
onePunchAC();
return 0;
}
```
## B)
``` cpp
#include <iostream>
#include <algorithm>
using namespace std;
void fast() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
}
void onePunchAC() {
int n; cin >> n;
int a[n+1];
for(int i = 1; i <= n; i++) a[i] = i;
do{
for(int i = 1; i <= n; i++) cout << a[i] << ' ';
cout << '\n';
}while(next_permutation(a+1,a+n+1));
}
int main() {
fast();
onePunchAC();
return 0;
}
```
## B2)
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int a[100];
int ans[100];
bool check[100];
int n,k;
void fast() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
}
void output() {
for(int i = 1; i <= k; i++) {
cout << ans[i] << ' ';
}
cout << '\n';
}
void Try(int i) {
for(int j = 1; j <= n; j++) {
if(check[j] == 0) {
check[j] = 1;
ans[i] = j;
if(i == k) {
output();
}
else {
Try(i+1);
}
check[j] = 0;
}
}
}
int main() {
fast();
cin >> n >> k;
for(int i = 1; i <= n; i++) a[i] = i;
Try(1);
return 0;
}
```
## C)
```cpp
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int a[n];
unordered_map<int,int> check;
vector<int> ans;
for(int i = 0; i < n; i++) {
cin >> a[i];
if(check[a[i]] == 0) {
ans.push_back(a[i]);
}
check[a[i]]++;
}
for(auto it : ans) {
cout << it << ' ';
}
return 0;
}
```
## C2)
```cpp
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int a[n];
unordered_map<int,int> check;
vector<int> ans;
vector<int> ans2[n];
for(int i = 0; i < n; i++) {
cin >> a[i];
if(check[a[i]] == 0) {
ans.push_back(a[i]);
}
check[a[i]]++;
ans2[a[i]].push_back(i);
}
for(auto it : ans) {
for(auto it2: ans2[it]) {
cout << it2 << ' ';
}
cout << '\n';
}
return 0;
}
```
## C3)
```cpp
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int a[n];
unordered_map<int,int> check;
map<int,int> ans1;
vector<int> ans;
vector<int> ans2[n];
for(int i = 0; i < n; i++) {
cin >> a[i];
if(check[a[i]] == 0) {
ans.push_back(a[i]);
}
check[a[i]]++;
ans2[a[i]].push_back(i);
}
for(auto it : ans2) {
ans1[it.size()]++;
}
for(int i = 1; i <= n; i++) {
cout << ans1[i] << '\n';
}
return 0;
}
```
## D)
```cpp
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
void fast() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
}
void onePunchAC() {
int n; cin >> n;
int a[n], prev[n], next[n];
unordered_map<int,int> mp1;
unordered_map<int,int> mp2;
for(int i = 0; i < n; i++) cin >> a[i];
for(int i = 0; i < n; i++) {
if(mp1.find(a[i]) == mp1.end()) {
cout << -1 << ' ';
}
else {
cout << mp1[a[i]] << ' ';
}
mp1[a[i]] = i;
}
cout << '\n';
vector<int> ans;
for(int i = n - 1; i >= 0; i--) {
if(mp2.find(a[i]) == mp2.end()) {
ans.push_back(-1);
}
else {
ans.push_back(mp2[a[i]]);
}
mp2[a[i]] = i;
}
for(int i = ans.size() - 1; i >= 0; i--) {
cout << ans[i] << ' ';
}
}
int main() {
fast();
onePunchAC();
return 0;
}
```
## D2)
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int a[n+1];
map<int,vector<int>> mp;
for(int i = 1; i <= n; i++) {
cin >> a[i];
mp[a[i]].push_back(i);
}
bool first = true;
for(int i = 1; i <= n; i++) {
if(!first) cout << ' ';
first = false;
auto it = upper_bound(mp[a[i]].begin(), mp[a[i]].end(), i);
if(it != mp[a[i]].end()) {
int pos = *it;
cout << pos - 1;
}
else {
cout << n - i + mp[a[i]][0];
}
}
return 0;
}
```
# 7/9
## A)
``` cpp
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main() {
set<string> se;
vector<string> v;
string s;
while(cin >> s) {
if(se.find(s) == se.end()) {
v.push_back(s);
}
se.insert(s);
}
for(int i = 0; i < v.size(); i++) {
cout << v[i] << '\n';
}
return 0;
}
```
C)
``` cpp
#include <iostream>
using namespace std;
using ll = long long;
const int mod = 1e9 + 7;
ll f(int n) {
return (1 + n) * n / 2;
}
ll g(int n) {
ll ans = 0;
for(int i = 1; i <= n; i++) {
ans+=(i*i);
}
return ans;
}
ll h(int n) {
ll ans = 0;
for(int i = 1; i <= n; i++) {
ans+=(i*i*i);
}
return ans;
}
ll f2(int n) {
return (1 + n) * n / 2 %= mod;
}
ll g2(int n) {
ll ans = 0;
for(int i = 1; i <= n; i++) {
ans+=(i*i);
ans %= mod;
}
return ans %= mod;
}
ll h2(int n) {
ll ans = 0;
for(int i = 1; i <= n; i++) {
ans+=(i*i*i);
ans %= mod;
}
return ans %= mod;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}